查看原文
其他

物联网MQTT—取消订阅

果果 果果小师弟 2022-07-15

点击上方“果果小师弟”,选择“置顶/星标公众号”

干货福利,第一时间送达!

上一节我们说到了要订阅主题和订阅确认,就相当于你关注了我的微信公众号:果果小师弟(订阅主题),那么我每次发布一条新的文章之后你就会收到。那么过一段时间你不想关注我的公众号了就去狠心的取消关注(取消订阅)。那么这一节就教你如何来取消关注我的公众号,可不是点一下取消关注就可以了哟,需要发送相应的报文来取消订阅。(当然大家一定不要取消关注我的公众号哟,订阅我—每天为你推送好文章,哈哈!)

注意:

  • 1.取消订阅主题的时候一定要connect上服务器和订阅主题,就好比你想取消关注我的公众号只有登录了微信然后关注了我之后才能取消关注我啊。

  • 2.取消订阅是客户端取消订阅,不是服务端取消订阅。就好比你不想关注我的公众号你就取消了,而不是我在后台取消了你对我的关注,再说了我也没有那么大的本事啊对吧。

1.固定报头

2.可变报头

3.有效载荷


订阅主题:主题: /sys/a10zwkUxQUS/LY-1/thing/service/property/set

相应的16进制:

  • 2F 73 79 73 2F 61 31 30 7A 77 6B 55 78 51 55 53 2F 4C 59 2D 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74  
    共48个(0x30)
    也就是
    00 30 2F 73 79 73 2F 61 31 30 7A 77 6B 55 78 51 55 53 2F 4C 59 2D 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74

  • 加上固定报头A2 ?? 和可变报头00 0A
    A2 ?? 00 0A 00 30 2F 73 79 73 2F 61 31 30 7A 77 6B 55 78 51 55 53 2F 4C 59 2D 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74
    得到??为52(0x34)

  • 最终为:
    A2 34 00 0A 00 30 2F 73 79 73 2F 61 31 30 7A 77 6B 55 78 51 55 53 2F 4C 59 2D 31 2F 74 68 69 6E 67 2F 73 65 72 76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74

现在我们通过网络调试助手来向阿里云服务端订阅主题
1.第一步向服务端发送connect报文确认是否连接成功,然后发送订阅报文,服务端会返回一个
90 03 00 0A 10确认订阅成功。最后我们在发送我们刚刚算好的订阅消息报文:

A2 34 00 0A 00 30 2F 73 79 73 2F 61 31 30 7A 77 6B 55 78
51 55 53 2F 4C 59 2D 31 2F 74 68 69 6E 67 2F 73 65 72 
76 69 63 65 2F 70 72 6F 70 65 72 74 79 2F 73 65 74

服务端会返回一个B0 02 00 0A确认订阅。当然如果你发送的订阅消息是错误的话,服务端不会返回数据,同时你的网络调试助手马上会断开。这时候你就要回去好好检查一下你的取消订阅报文是否计算的正确,直到服务器返回正确的回应才可以。

取消订阅确认

上面我们说在我们发送取消订阅报文之后服务器会马上返回订阅确认的消息:B0 02 00 0A,那么为啥服务器返回的的是这几个值而不是其他的值呢?为啥返回了B0 02 00 0A我们就知道取消订阅成功了呢?这就需要我们了解一下取消订阅确认的报文是怎么组成的。同样,取消订阅确认的报文也由固定报头、可变报头、有效载荷组成的。

1.固定报头

2.可变报头

3.有效载荷

  取消订阅确认报文中没有有效载荷

4.最终得到订阅确认的报文


  知道了取消订阅确认报文的组成部分现在应该明白了为啥返回的取消订阅确认消息是B0 02 00 0A了吧,哈哈。是不是感觉很奇妙!

END

如果觉得文章对你有帮助,欢迎转发、留言、点赞、分享给你的朋友,感谢您的支持!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存